import yaml
import re
from string import Template

class Utils:

    @classmethod
    def yaml_load(cls,path):
        with open(path) as f:
            return yaml.safe_load(f)
    @classmethod
    def yaml_data(cls,data,name):
        list1 = []
        print(data)
        for i in data[name]:
            # print(i)
            # a = (i['username'],i['password'],i['ret'],i['mag'])
            a = [v for k,v in i.items()]
            # print(a)
            list1.append(a)

        # print('-------')
        # print(list1)
        return list1
    
    # @classmethod
    # def yaml_replace(cls,)
        #主要分为以下步骤
        # 第一步：读取yaml文件或读取已有数据
        # 第二步：读取原来的函数的入参
        # 第三部：把yaml数据中要替换的部分替换为入参
        # 第四部：把数据传入调用原来的函数
    # 这里不想写迭代，用string.Template
    # 但是：Template存在问题：无法对被替换的内容进行处理
    @classmethod
    def string_replace(cls,source_data,**kwargs) -> dict:
        data_str = yaml.safe_dump(source_data)
        print('-----替换前的模版-------')
        print(data_str)

        t = Template(data_str)
        new_data = t.substitute(**kwargs)
          
        print('-----替换后的实际数据-------')
        print(new_data)

        #返回一个对象
        return yaml.safe_load(new_data)